
Bartholomeus Crane
Gallente The Crane Family
|
Posted - 2008.07.21 19:08:00 -
[1]
OK, here's the lag problem as I see it.
Suppose you have two players on a grid fighting each other. Each player is represented by ten variables. Speed, direction, resists, what-have-you, each variable represented by a byte of information (just assuming).
For the fight, each player needs to be aware of the other players variables, so it needs to have access the 20 variables. It needs that access every, say, millisecond or so. so that's 10 bytes per millisecond for each player, or 10 kilobytes per second. In total 2*10=20 Kb/s per player. As network loads go, that's doable, for a 1-on-1.
With more players these (ficticious) numbers are multiplied. So from the player's perspective, on a 20-on-20 fight that means 40*10 = 400 kb/s of network bandwidth. See, it's getting worse. Larger numbers of players means more bandwidth needed.
But that's only considering the client view, for the server needs to push out a lot more data, because it needs to push that out for every player involved, so that's 20*20*10 kb/s, and that's exponential with the number of players!
But that's only considering bandwidth as the bottleneck, consider the server's calculations as well, as each of those variables can be affected by each of the other variables, so for every variable, it has to check all other variables and see if they affect it. Not an easy task!
Now, I pulled those numbers out of my rear-end, as we all know full well that there are many more variables in EVE to consider in a fight, but all are not as relevant. And luckily we also know that an update every millisecond for each of those variables is not needed. Also, since EVE works with a distributed system, a lot of those calculations can be done in parallel using the RAMSAN for fast access to those variables. So, that's a mixed bag (which makes it more difficult to calculate).
I do hope, however, that this (simplistic) example shows that lag, as such, can never be solved completely, however much we like it to be. There will always be a number of players, or a number of variables that will outstrip the bandwidth available. For a similar more classic example of such a closed system, check out the pages on the n-body problem
What is possible is to reduce the factors. That means lesser players on the grid (which we don't want) or less relevant variables. CCP has be trying to do the latter, for example with the new gang system. In some instances it has failed, for example by making it less profitable to have a blob and therefore reduce the number of players on the grid (the small gang objective anyone?).
I think CCP is aware of this problem and is working on it. One idea I like is to make repping (shield/armour/hull) dependent on number of players in gang or on grid. That means introducing a law of diminished return on bringing more players to a fight. I fully admit to have no clue on how this should work, but maybe it can work.
DISCLAIMER: I probably made a mistake calculating this, but you'll get the picture. -- Quis custodiet ipsos custodes? |